#ifndef SERIAL_H
#define SERIAL_H

#include <QWidget>
#include <QTime>
#include <QTimer>
#include <QMessageBox>
#include <QDebug>
#include <QQueue>
#include <QVector3D>
#include <math.h>
#include <QtSerialPort/QSerialPort>
#include <QtSerialPort/QSerialPortInfo>

#define PI 3.1415926

namespace Ui {
class Serial;
}

class Serial : public QWidget {
    Q_OBJECT

  public:
    explicit Serial(QWidget *parent = nullptr);
    ~Serial();

    void init(void);
    void serialNumUpdate(void);

  signals:
    void pointDataReady(void);

  public slots:

  private slots:
    void serialPort_getdata(void);
    void serialReceiveDisplayEvent(void);
    void serialReceiveToPiontCloud(void);
    void onBtnClearReceive_clicked(void);
    void onBtnOpenOrColse_clicked(void);
    void onBtnStart_clicked(void);
    void onBtnPause_clicked(void);
    void onBtnStop_clicked(void);

  private:
    Ui::Serial *ui;
    QSerialPort *serialBase = nullptr;
    QTimer *timer_serialMsgUpdate = nullptr;
    QByteArray buffer_Serial; //一次从串口接收到的字符串
    QByteArray str_buffer_Serial; //累计从串口接收到的字符串，在显示后清零
    QByteArray pointCloud_buffer_Serial; //累计从串口接收到的字符串，传输给点云库处理，在显示后清零
};

#endif // SERIAL_H
